#文件相关操作
# 读写追加
# 模板：
# 1.打开文件
# 2.操作
# 3.关闭文件（避免资源泄露）
#
# 1.若不关闭文件，最多可打开多少文件(8189 + 3(标准输入输出错误） == 2^13）
# 2.若不存储文件，虽然python会自动给释放不需要的打开文件（避免不关闭操作），但依然会判断是否不需要耗费时间
# file = []
# count = 0
# while True:
#     f = open('D:/code/test.txt', 'r')
#     file.append(f)
#     count += 1
#     print(count)

# 2.写操作
# f = open('d:/code/test.txt','w')
# f.write('hello world')
# f.close()
#
# # 若以'w'方式打开每次会清空原有文件内容
# f = open('d:/code/test.txt','w')
# f.close()

# # 以'a'方式打开不会清空会追加到原有内容末尾
# f = open('d:/code/test.txt','w')
# f.write('Hello')
# f.close()
#
# # 若以'w'方式打开每次会清空原有文件内容,'\n'会添加换行，\转移字符
# f = open('d:/code/test.txt','a')
# f.write('\nWorld')
# f.close()
#
# #若以读方式打开，却强行去写会报错
# f = open('d:/code/test.txt','r')
# f.write()
# f.close()

# 3.读操作
# f = open('d:/code/test.txt','r')
# result = f.read(2)
# print(result)
# f.close()

# #（1） 会有编码格式的问题，我们要统一代码和文件两者间的编码格式,使用encoding关键字参数
# f = open('d:/code/test.txt','r',encoding='utf-8')
# # 读前两个参数
# result = f.read(2)
# print(result)
# f.close()

# （2）按行读取  for
# f = open('d:/code/test.txt','r',encoding='utf-8')
# for line in f:
#     print(f'line = {line}')
# f.close()
#
# # （3）读取时用于文件自己的换行和python自己的换行，会出现空行，使用end关键字参数去除空行
# f = open('d:/code/test.txt','r',encoding='utf-8')
# for line in f:
#     print(f'line = {line}',end = '')
# f.close()

# # （4）可以使用readlines将文件整个读取出来按照行组织在一个列表中(更高效）
# f = open('d:/code/test.txt','r',encoding='utf-8')
# line = f.readlines()
# print(line)